package tse

import "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"

type CloudTSEInterface interface {
	NacosGreeter
	ApolloGreeter
	EurekaGreeter
	ZookeeperGreeter
	RabbitMQGreeter
	RocketMQGreeter
}

type TSE struct {
	credential *common.Credential
}

func NewTse(credential *common.Credential) CloudTSEInterface {
	return &TSE{
		credential: credential,
	}
}

func (t *TSE) Nacos(region string) NacosInterface {
	return newNacos(t, region)
}

func (t *TSE) Apollo(region string) ApolloInterface {
	return newApollo(t, region)
}

func (t *TSE) Eureka(region string) EurekaInterface {
	return newEureka(t, region)
}

func (t *TSE) Zookeeper(region string) ZookeeperInterface {
	return newZookeeper(t, region)
}

func (t *TSE) RabbitMQ(region string) RabbitMQInterface {
	return newRabbitMQ(t, region)
}

func (t *TSE) RocketMQ(region string) RocketMQInterface {
	return newRocketMQ(t, region)
}

func (t *TSE) Credential() *common.Credential {
	return t.credential
}
